<?php
class ControllerAccountForgotten extends Controller {
	private $error = array();

	public function index() {
		if ($this->customer->isLogged()) {
			$this->redirect($this->url->link('account/account', '', 'SSL'));
		}

        $this->language->load('account/forgotten');
        $this->load->model('account/customer');

        if(isset($this->request->post['email'])){
            $json=array();
            $json['redirectUrl']='';
            $json['error']='';

            $email=$this->request->post['email'];

            if($this->validate($email)){
                $json['redirectUrl']=HTTP_SERVER;

                $this->language->load('mail/forgotten');
                $password = substr(sha1(uniqid(mt_rand(), true)), 0, 10);
                if($customer=$this->model->load('customerModel')->findByAttributes(array('email'=>$this->request->post['email']))){
                    $password=$customer['pwd'];
                }

                $this->model_account_customer->editPassword($this->request->post['email'], $password);

                $subject = sprintf($this->language->get('text_subject'), $this->config->get('config_name'));

                $message  = sprintf($this->language->get('text_greeting'), $this->config->get('config_name')) . "\n\n";
                $message .= $this->language->get('text_password') . "\n\n";
                $message .= $password;

                $mail = new Mail();
                $mail->protocol = $this->config->get('config_mail_protocol');
                $mail->parameter = $this->config->get('config_mail_parameter');
                $mail->hostname = $this->config->get('config_smtp_host');
                $mail->username = $this->config->get('config_smtp_username');
                $mail->password = $this->config->get('config_smtp_password');
                $mail->port = $this->config->get('config_smtp_port');
                $mail->timeout = $this->config->get('config_smtp_timeout');
                $mail->setTo($email);
                $mail->setFrom($this->config->get('config_email'));
                $mail->setSender($this->config->get('config_name'));
                $mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
                $mail->setText(html_entity_decode($message, ENT_QUOTES, 'UTF-8'));
                $mail->send();

                $json['user_message']=$this->language->get('text_success');
                $json['redirect_url']=HTTP_SERVER;
            }else{
                $json['error']=$this->error['warning'];
            }

            die(json_encode($json));
        }

		$this->document->setTitle($this->language->get('heading_title'));
        $this->load->helper('html');
        $this->data['button_continue']=getSubmitButton(array(
            'button_class'=>'button',
            'button_id'=>'account-forgotten',
            'div_class'=>'buttons',
            'value'=>$this->language->get('button_continue'),
            'autofocus'=>true,
        ));
        $this->data['loading_image']=getLoadingImage(array('
            img_src'=>HTTP_IMAGE.'data/loadingIcon.gif',
            'div_id'=>'search-loading',
            'div_class'=>'loading',
            'img_id'=>'loading',
        ));

      	$this->data['breadcrumbs'] = array();

      	$this->data['breadcrumbs'][] = array(
        	'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home'),        	
        	'separator' => false
      	); 

      	$this->data['breadcrumbs'][] = array(
        	'text'      => $this->language->get('text_account'),
			'href'      => $this->url->link('account/account', '', 'SSL'),     	
        	'separator' => $this->language->get('text_separator')
      	);
		
      	$this->data['breadcrumbs'][] = array(
        	'text'      => $this->language->get('text_forgotten'),
			'href'      => $this->url->link('account/forgotten', '', 'SSL'),       	
        	'separator' => $this->language->get('text_separator')
      	);
		
		$this->data['heading_title'] = $this->language->get('heading_title');

		$this->data['text_your_email'] = $this->language->get('text_your_email');
		$this->data['text_email'] = $this->language->get('text_email');

		$this->data['entry_email'] = $this->language->get('entry_email');

        $this->load->helper('html');
        $this->data['button_back']=getAjaxButton(array(
            'data_url'=>$this->url->link('account/login', '', 'SSL'),
            'span_id'=>'account-back-button',
            'span_class'=>'button',
            'div_class'=>'account-buttons',
            'button_text'=>$this->language->get('button_back'),
        ));

		if (isset($this->error['warning'])) {
			$this->data['error_warning'] = $this->error['warning'];
		} else {
			$this->data['error_warning'] = '';
		}
		
		$this->data['action'] = $this->url->link('account/forgotten', '', 'SSL');
		
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/forgotten.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/account/forgotten.tpl';
		} else {
			$this->template = 'default/template/account/forgotten.tpl';
		}
		
		$this->children = array(
			'common/column_left',
			'common/column_right',
			'common/content_top',
			'common/content_bottom',
			'common/footer',
			'common/header'	
		);
								
		$this->response->setOutput($this->render());		
	}

	private function validate($email) {
		if(!$email || !$this->model_account_customer->getTotalCustomersByEmail($email)){
            $this->error['warning'] = $this->language->get('error_email');
            return false;
        }

        return true;
	}
}
?>